package com.dobby.pea.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dobby.pea.common.R;
import com.dobby.pea.entity.tbGood;
import com.dobby.pea.entity.tbGoodImg;
import com.dobby.pea.entity.tbType;

import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;

/**
 * @author Dobby
 * @version 1.0
 */
public interface GoodService extends IService<tbGood>{

    /**
     * 商品分页查询
     * @param page
     * @param pageSize
     * @param name
     * @return
     */
    R<Page> GoodDtoPage(int page, int pageSize, String name,Long typeId);

    /**
     * 新增商品图片
     * @param goodImg
     * @return
     */
    R saveImg(List<tbGoodImg> goodImg);

    /**
     * 根据id查询商品信息
     * @param id
     * @return
     */
    R getGoodById(Long id);


    /**
     * 下架(可批量)商品 修改数据库字段中的is_deleted 为 1，逻辑删除
     * @param ids
     * @return
     */
    R<String> soldOutGood( List<Long> ids);


    /**
     * 删除(可批量)商品
     * @param ids
     * @return
     */
    R<String> deleteGood( List<Long> ids);


    /**
     * 初始化该商品的销量
     * @param good
     */
    void initSales(tbGood good);

    /**
     * 返回一个用户旗下的所有商品 //前端输入用户id，当用户id等于商品createUser字段，返回所有商品信息
     * @param page
     * @param pageSize
     * @param name
     * @param typeId
     * @param userId
     * @return
     */
    R<Page> GoodDtoByUserPage(int page, int pageSize,String name,Long typeId,Long userId);


    R<Map<tbType,tbGood>> HotGoodByType(List<Long> ids);


    }
